home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
tos_updt
/
fmcity
/
palcom
/
auto
/
script
/
formcom.mx
< prev
next >
Wrap
Text File
|
1995-04-17
|
45KB
|
1,592 lines
//--------------------------------------------------------------------------//
// PALCOM V2.1 L10 //
// 自動通信:フォーラム巡回スクリプト //
// //
// CopyRight(C) 1994/10/20 //
// FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED //
// written by C-cube Soft T.Nakamura //
//--------------------------------------------------------------------------//
event @OPEN.EXTERN {
$$USER.DEFINED.9 = #TRUE;
$symList = [];
$mesList = [];
$dwnList = [];
$bulDwnList = [];
$noteDwnList = [];
$libDwnList = [];
$mesDwnList = [];
$mesList2 = [];
$symList2 = [];
$SetId = #FALSE;
$ForumName = "";
$AUTO.WAIT15 = AUTO.getWaitChar( 15 );
$AUTO.WAIT60 = AUTO.getWaitChar( 60 );
sys.global( $SetId );
sys.global( $ForumName );
sys.global( $AUTO.WAIT15 );
sys.global( $AUTO.WAIT60 );
//--- データの取得 ---//
$trdId = AUTO.getTrdId();
$setDataList = AUTO.getSetData();
$topList = list.getNth( $setDataList, 1 );
$formList = list.getNth( $setDataList, 2 );
$dwFlg = list.getNth( list.getNth( $topList, 3 ), 1 );
if( $dwFlg == #TRUE ) {
$dwnList = AUTO.getDownData();
$dwnList = AUTO.selectList( $dwnList, 5, 2 );
}
$mesUpFlg = list.getNth( list.getNth( $topList, 3 ), 2 );
if( $mesUpFlg == #TRUE ) {
$mesList = AUTO.getUpList( 7 );
}
$symUpFlg = list.getNth( list.getNth( $topList, 3 ), 3 );
if( $symUpFlg == #TRUE ) {
$symList = AUTO.getUpList( 12 );
}
$i = 1;
foreach( $list, $formList ) {
//--- 巡回する必要があるかどうかのチェック ---//
$topList = list.get1st( list.getNth( $list, 2 ));
if( list.get1st( list.get1st( $topList )) == #FALSE ) {
$i = $i + 1; // とにかく巡回しない
continue;
}
//--- 対象のフォーラムのデータを抜き出す ---//
$formNo = list.getLast( list.get1st( $list ));
//--- 処理内容のチェック ---//
$st = 0;
if( $symUpFlg == #TRUE ) {
$symList2 = AUTO.selectUpList( $symList, 3, $formNo );
if( list.size( $symList2 ) != 0 ) {
$st = $st | 0x01; // SYSOP 宛メール有り
}
}
if( $mesUpFlg == #TRUE ) {
$mesList2 = AUTO.selectUpList( $mesList, 3, $formNo );
if( list.size( $mesList2 ) != 0 ) {
$st = $st | 0x02; // 会議室への書き込み
}
}
if( $dwFlg == #TRUE ) {
$dwnList2 = AUTO.selectList( $dwnList, 6, $formNo );
$ftopList = list.get1st( list.getNth( $list, 2 ));
$noteFlg = list.getNth( list.getNth( $ftopList, 3 ), 1 );
$bulFlg = list.getNth( list.getNth( $ftopList, 3 ), 2 );
if( list.get1st( list.getNth( $topList, 4 )) == #TRUE ) {
$st = $st | 0x04; // 会議室の巡回
$mesDwnList = AUTO.selectList( $dwnList2, 7, 3 );
if( list.size( $mesDwnList ) != 0 ) {
$st = $st | 0x08; // 会議室文書の指定ダウンロード
}
}
if( list.getNth( list.getNth( $topList, 5 ),2 ) == #TRUE ) {
$st = $st | 0x10; // データライブラリの巡回
}
if( list.getNth( list.getNth( $topList, 5 ),1 ) == #TRUE ) {
$libDwnList = AUTO.selectList( $dwnList2, 7, 4 );
if( list.size( $libDwnList ) != 0 ) {
$st = $st | 0x20; // データの指定ダウンロード
}
}
if( $noteFlg == #TRUE ) {
$st = $st | 0x40; // お知らせの巡回
$noteDwnList = AUTO.selectList( $dwnList2, 7, 1 );
}
if( $bulFlg == #TRUE ) {
$st = $st | 0x80; // 掲示板(BUL)の巡回
$bulDwnList = AUTO.selectList( $dwnList2, 7, 2 );
}
}
//--- 最終的に巡回する必要がある場合に巡回する ---//
if( $st != 0 ) {
//--- フォーラムを巡回する ---//
if( Auto.forumCom( $st, $list, $symList2, $mesList2, $mesDwnList,
$libDwnList, $noteDwnList, $bulDwnList ) == -1 ) {
AUTO.sendCommand("TT");
}
if( AUTO.getHaltFlg() != 0 ) {
exit;
}
}
$i = $i + 1;
continue;
}
return;
}
event @CLOSE.EXTERN {
sys.startIntRec();
return;
}
event @ERROR {
sys.startIntRec();
AUTO.fatalError();
event.mainLoop();
}
//------------------------------//
//--- フォーラム内の巡回 ---//
//------------------------------//
function Auto.forumCom(
$status,
$list,
$symList,
$mesUpList,
$mesDwnList,
$libDwnList,
$noteDwnList,
$bulDwnList )
{
$tag = list.get1st( $list );
$formNo = list.getNth( $tag, 3 );
$topList = list.getNth( list.getNth( $list, 2 ), 1 );
$mesList = list.getNth( list.getNth( $list, 2 ), 2 );
$libList = list.getNth( list.getNth( $list, 2 ), 3 );
$chkData = list.getNth( list.getNth( $list, 2 ), 4 );
//--- フォーラムに入る ---//
if(( $ret = Auto.forumIn( data.copy( $tag ), list.getNth( $topList, 2 ),
$formNo, $chkData )) != 1 ) {
//--- フォーラムに入れなかった ---//
return( $ret );
}
//--- SYSOP宛メールの送信 ---//
if( $status & 0x01 ) {
xfer.pauseText( AUTO.getLogFileId());
foreach( $a, $symList ) {
$$USER.DEFINED.9 = [$a, 4];
$path = str.join([$$DIR.STANDARD,"AUTO\\SCRIPT\\SENDFILE.MX"],"" );
script.openExtern( $path, #FALSE, [] );
if( AUTO.getHaltFlg() != 0 ) {
return( #FALSE );
}
if( $$USER.DEFINED.9 == #TRUE ) {
AUTO.setSendFlg( $a );
}
}
xfer.resumeText( AUTO.getLogFileId());
}
//--- お知らせを読む ---//
if( $status & 0x40 ) {
Auto.noteCom( $formNo, $noteDwnList );
}
//--- 掲示板を読む ---//
if( $status & 0x80 ) {
Auto.bulCom( $formNo, $bulDwnList );
}
//--- 会議室の巡回 ---//
if( $status & 0x0E ) {
$ret = Auto.mes( $ForumName, $status, data.copy( $tag ), $mesList,
$mesUpList, $mesDwnList );
if( AUTO.getHaltFlg() != 0 ) {
return( #FALSE );
}
if( $ret == #FALSE ) {
return( #FALSE );
}
}
//--- データライブラリの巡回 ---//
if( $status & 0x30 ) {
$ret = Auto.lib( $ForumName, $status, data.copy( $tag ),
$libList, $libDwnList );
if( AUTO.getHaltFlg() != 0 ) {
return( #FALSE );
}
if( $ret == #FALSE ) {
return( #FALSE );
}
}
return( #TRUE );
}
//----------------------------//
//--- フォーラムに入る ---//
//----------------------------//
function Auto.forumIn(
$tag, // フォーラムタグ
$tourokuList, // 会員登録情報
$formNo, // フォーラム番号
$checkData ) // フォーラムチェックデータ
{
$logId = AUTO.getLogFileId();
//--- データをデータベースから取り出す ---//
list.putLast( $tag, -2 );
$ret = trd.getData( AUTO.getTrdId(), $tag );
if( list.get1st( $ret ) != -2 ) { // データが無い
return( 0 );
}
//--- データの編集 ---//
$ret = str.split( list.getNth( $ret, 2 ), "\t" );
$ForumName = list.getNth( $ret, 2 );
$name = str.smallToLarge( list.getNth( $ret, 1 ));
//--- チェックデータのチェック ---//
if( data.toNumber( list.getNth( $ret, 3 )) != $checkData ) {
return( 0 );
}
//--- フォーラムに入る ---//
$inFlg = 0;
$newFlg = 0;
sys.stopIntRec();
$cmd = str.join(["GO ", $name, "\r"], "" );
loop {
AUTO.putStr( $cmd );
$errFlg = 1;
comtable( $a, 300 ) {
$name { $errFlg = 0; exit; }
interval{ AUTO.haltCheck(); }
}
if( $errFlg == 0 ) {
$ptr = file.tell( $logId );
exit;
}
AUTO.putStr("\r");
AUTO.waitPrompt( #TRUE );
continue;
}
$moreFlg = 0;
comtable( $a, 1200 ) {
interval { AUTO.haltCheck(); }
$name { $inFlg = 1; } // 判定用文字列
"more" { $moreFlg = 1; }
"続き (" { $moreFlg = 1; }
$AUTO.WAIT60 { AUTO.putStr("\r");}
"1:フォーラム概要 2:一時利用 3:入会手続き" {
$newFlg = 1; // 会員登録しなくては
}
">\w\w" { // プロンプト
if( $moreFlg == 1 ) {
AUTO.putStr("\r");
$moreFlg = 0;
} else {
exit;
}
}
">\w\w" { // プロンプト
if( $moreFlg == 1 ) {
AUTO.putStr("\r");
$moreFlg = 0;
} else {
exit;
}
}
timeout { // 何かおかしい
$errMsg = ["通信異常(タイムアウト)",
"フォーラムに入れませんでした。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回", $errMsg );
return( -1 );
}
}
if( $newFlg == 1 ) {
//--- 会員登録していない ---//
if( list.get1st( $tourokuList ) == #FALSE ) {
return( 0 ); // 会員登録しない
}
AUTO.sendCommand("3");
AUTO.sendCommand( list.getNth( $tourokuList, 2 ));
AUTO.sendCommand("1");
AUTO.sendCommand("1");
$newFlg = 2;
}
if( $inFlg == 0 ) {
$errMsg = ["フォーラムに入れませんでした。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回", $errMsg );
return( -1 );
}
//--- フォーラムオープニングメッセージの記録 ---//
$ptr2 = file.tell( $logId );
AUTO.writeIdx([[0x501,[2,[1,2,$formNo,-1,-1,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
//--- 初期設定コマンドの送信 ---//
AUTO.sendCommand("SET PAGE OFF");
AUTO.sendCommand("SET MENU OFF");
AUTO.sendCommand("SEND OFF");
return( 1 );
}
//--------------------------//
//--- お知らせの巡回 ---//
//--------------------------//
function Auto.noteCom( $formNo, $downList ) {
$logId = AUTO.getLogFileId();
//--- お知らせに入って、タイトル一覧を取得 ---//
$inFlg = #FALSE;
$ptr = #FALSE;
$errFlg = 0;
AUTO.putStr2("ANN\r");
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
">\w\w" { exit; }
">\w\w" { exit; }
"題名\n" {
$inFlg = #TRUE;
$ptr = file.tell( $logId );
}
"\n" {
if( $inFlg == #TRUE ) {
$ptr2 = file.tell( $logId );
}
}
$AUTO.WAIT60 {
$errFlg = 1;
AUTO.putStr("\r");
}
}
if( $inFlg == #FALSE ) {
//--- お知らせに入れなかった ---//
$errMsg = ["フォーラムのお知らせに入れませんでした。",
str.join(["フォーラム名 :", $ForumName],"" )];
AUTO.error("フォーラム巡回(お知らせ)", $errMsg );
return( #FALSE );
}
if(( $errFlg == 0 )&&( $ptr != #FALSE )) {
AUTO.writeIdx([[0x501,[4,[1,2,$formNo,1,-1,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
} else {
$errMsg = ["フォーラムのお知らせの文書一覧の取得に失敗しました。",
str.join(["フォーラム名 :", $ForumName],"" )];
AUTO.error("フォーラム巡回(お知らせ)", $errMsg );
}
//--- ダウンロードする文書がある場合表示させる ---//
$i = 1;
$num = list.size( $downList );
if( $num != 0 ) {
AUTO.sendCommand("SET MENU OFF");
loop {
if( $i > $num ) {
exit;
}
$noList = [];
$chkList = [];
$downList2 = [];
//--- 15個ずつまとめて読む ---//
loop {
if( $i > $num ) {
exit;
}
$list = list.getNth( $downList, $i );
list.putLast( $noList, data.toString(list.getNth( $list, 8 )));
list.putLast( $chkList, list.getNth( $list, 12 ));
list.putLast( $downList2, $list );
if( list.size( $noList ) == 15 ) {
exit;
}
$i = $i + 1;
}
if( list.size( $noList ) != 0 ) {
$cmd = str.join( $noList, "," );
$cmd = str.join([$cmd, "\r"], "" );
AUTO.putStr2( $cmd );
$ptr = file.tell( $logId );
$ptr2 = $ptr;
$j = 1;
$flg = 0;
$errFlg = 0;
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
"◆番号又はコマンド"{
AUTO.waitPrompt( #TRUE );
$errMsg = ["存在しない文書番号が存在します。",
"確認をしてください。",
str.join(["フォーラム名:",$ForumName],""),
str.join(["文書番号 :",$cmd ],"")];
AUTO.error("フォーラム巡回(お知らせ文書閲覧)",
$errMsg);
exit;
}
">\w\w" {
if( $errFlg == 0 ) {
AUTO.writeIdx([
[0x501,[3,[1,2,$formNo,1,$no,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
$list = list.getNth( $downList2, $j );
list.del1st( $list );
list.put1st( $list, 1 );
}
exit;
}
"next>\w\w" {
if( $errFlg == 0 ) {
AUTO.writeIdx([
[0x501,[3,[1,2,$formNo,1,$no,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
$list = list.getNth( $downList2, $j );
list.del1st( $list );
list.put1st( $list, 1 );
}
AUTO.putStr("\r");
$flg = 0;
$errFlg = 0;
$j = $j + 1;
}
"\n" {
if( $flg == 0 ) {
$ptr = file.tell( $logId );
$ptr2 = $ptr;
} else {
$ptr2 = file.tell( $logId );
}
}
"%2b%d %2d/%2d/%2d " {
if( file.tell( $logId ) == $ptr2 + 18 ) {
$no = data.toNumber( str.left( $a, 3 ));
$flg = 1;
$str = str.replaceAll(
com.getString( 0, #TRUE, #TRUE ),"\n", "");
$chkNum = str.addCode( $str );
//test.print("CHECK:");
//test.print( data.toString( $chkNum ));
//test.print("/");
//test.print( data.toString( list.getNth( $chkList, $j )));
if( list.getNth( $chkList, $j ) != $chkNum ) {
$errFlg = 1;
$errMsg =[
"お知らせの文書番号が変更されています。",
"設定を再度行って下さい。",
str.join(["フォーラム名:",$ForumName],""),
str.join(["文書番号 :",
data.toString( $no )],"")];
AUTO.error(
"フォーラム巡回(お知らせ文書閲覧)",
$errMsg );
}
}
}
}
}
if( $i <= $num ) {
AUTO.sendCommand("M");
}
}
}
AUTO.updateDownData( $downList );
return;
}
//-------------------------------//
//--- 掲示板 (BUL) の巡回 ---//
//-------------------------------//
function Auto.bulCom( $formNo, $downList ) {
$logId = AUTO.getLogFileId();
//--- 掲示板に入る ---//
$errFlg = 0;
AUTO.putStr2("BUL\r");
comtable( $a, 1200 ) {
"ご利用できません◆\n" { $errFlg = 1; exit; }
">\w\w" { exit; }
">\w\w" { exit; }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
timeout { $errFlg = 1; exit; }
interval { AUTO.haltCheck(); }
}
if( $errFlg == 1 ) {
$errMsg = ["フォーラムの掲示板に入れませんでした。",
str.join(["フォーラム名 :", $ForumName],"" )];
AUTO.error("フォーラム巡回(掲示板)", $errMsg );
return( #FALSE );
}
//--- ダウンロードする文書がある場合表示させる ---//
$i = 1;
$num = list.size( $downList );
if( $num != 0 ) {
AUTO.sendCommand("SET MENU OFF");
loop {
if( $i > $num ) {
exit;
}
$noList = [];
$chkList = [];
$downList2 = [];
//--- 15個ずつまとめて読む ---//
loop {
if( $i > $num ) {
exit;
}
$list = list.getNth( $downList, $i );
list.putLast( $noList, data.toString(list.getNth( $list, 8 )));
list.putLast( $chkList, list.getNth( $list, 12 ));
list.putLast( $downList2, $list );
if( list.size( $noList ) == 15 ) {
exit;
}
$i = $i + 1;
}
if( list.size( $noList ) != 0 ) {
$cmd = str.join( $noList, "," );
AUTO.putStr2( str.join(["READ ", $cmd, "\r"], "" ));
$ptr = file.tell( $logId );
$ptr2 = $ptr;
$j = 1;
$flg = 0;
$errFlg = 0;
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
"◆番号又はコマンド"{
AUTO.waitPrompt( #TRUE );
$errMsg = ["存在しない文書番号が存在します。",
"確認をしてください。",
str.join(["フォーラム名:",$ForumName],""),
str.join(["文書番号 :",$cmd ],"")];
AUTO.error("フォーラム巡回(掲示板文書閲覧)",$errMsg);
exit;
}
">\w\w" {
if( $errFlg == 0 ) {
AUTO.writeIdx([
[0x501,[5,[1,2,$formNo,2,$no,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
$list = list.getNth( $downList2, $j );
list.del1st( $list );
list.put1st( $list, 1 );
}
exit;
}
"next>\w\w" {
if( $errFlg == 0 ) {
AUTO.writeIdx([
[0x501,[5,[1,2,$formNo,2,$no,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
$list = list.getNth( $downList2, $j );
list.del1st( $list );
list.put1st( $list, 1 );
}
AUTO.putStr("\r");
$flg = 0;
$errFlg = 0;
$j = $j + 1;
}
"\n" {
if( $flg == 0 ) {
$ptr = file.tell( $logId );
$ptr2 = $ptr;
} else {
$ptr2 = file.tell( $logId );
}
}
"%2b%d %3c%5d %b%d/%2d%9b" {
if( file.tell( $logId ) == $ptr2 + 30 ) {
$no = data.toNumber( str.left( $a, 3 ));
$flg = 1;
$str = str.replaceAll(
com.getString( 0, #TRUE, #TRUE ),"\n", "");
$chkNum = str.addCode( $str );
//test.print("CHECK:");
//test.print( data.toString( $chkNum ));
//test.print("/");
//test.print( data.toString( list.getNth( $chkList, $j )));
if( list.getNth( $chkList, $j ) != $chkNum ) {
$errFlg = 1;
$errMsg =[
"掲示板の文書番号が変更されています。",
"設定を再度行って下さい。",
str.join(["フォーラム名:",$ForumName],""),
str.join(["文書番号 :",
data.toString( $no )],"")];
AUTO.error("フォーラム巡回(掲示板文書閲覧)",
$errMsg );
}
}
}
}
}
AUTO.sendCommand("M");
}
}
AUTO.updateDownData( $downList );
//--- タイトル一覧を取得する ---//
$errFlg = 0;
$ptr = #FALSE;
AUTO.putStr2("READ\r");
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
">\w\w" { exit; }
">\w\w" { exit; }
"参照 題名\n" {
$ptr = file.tell( $logId );
}
"\n" {
$ptr2 = file.tell( $logId );
}
$AUTO.WAIT60 {
$errFlg = 1;
AUTO.putStr("\r");
}
}
if(( $errFlg == 0 )&&( $ptr != #FALSE )) {
AUTO.writeIdx([[0x501,[6,[1,2,$formNo,2,-1,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
} else {
$errMsg = ["フォーラムの掲示板の文書一覧の取得に失敗しました。",
str.join(["フォーラム名 :", $ForumName],"" )];
AUTO.error("フォーラム巡回(掲示板)", $errMsg );
}
return;
}
//----------------------------//
//--- 電子会議室の巡回 ---//
//----------------------------//
function Auto.mes(
$ForumName, // フォーラム名
$status, // 動作ステータス
$tag, // フォーラムのTRDのID
$list, // 会議室情報リスト
$upList, // アップロード情報リスト
$downList ) // ダウンロード情報リスト
{
$dbChkList = [];
$chkList = [];
$numList = [];
$strList = [];
$maxNo = 0;
$formNo = list.getNth( $tag, 3 );
sys.stopIntRec();
//--- データベースファイルのデータを取り出す ---//
$i = 1;
$trdId = AUTO.getTrdId();
$tagSub = data.copy( $tag );
list.putLast( $tagSub, 3 );
list.putLast( $tagSub, -6 );
loop {
$ret = trd.getData( $trdId, $tagSub );
if( list.get1st( $ret ) == 0 ) {
exit;
}
$wkList = str.split( list.getNth( $ret, 2 ), "\t" );
$no = data.toNumber( list.get1st( $wkList ));
$str = list.getNth( $wkList, 2 );
$str = str.mid( $str, 28, str.length( $str ) - 28 );
$chkNum = str.addCode( $str );
loop {
if( $i == $no ) {
exit;
}
list.putLast( $dbChkList, -1 );
$i = $i + 1;
}
list.putLast( $dbChkList, $chkNum );
$i = $i + 1;
$maxNo = $no;
$tagSub = [];
}
//--- 会議室の一覧を表示 ---//
$updateFlg = 0;
$mdsList = [];
$titleList = [];
AUTO.putStr2("MES\r");
comtable( $a, 1200 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
">\w\w" { exit; } // プロンプト
">\w\w" { exit; }
"%b%d %5b (%4b) %2d/%2d " { // 一覧の見出し
//--- 見出し文字列と会議室名の保存 ---//
list.putLast( $mdsList, $a );
list.putLast( $titleList,
str.replaceAll( com.getString(0, #TRUE, #TRUE), "\n", ""));
}
timeout { // 何か変・・・
$errMsg = ["通信異常(タイムアウト)",
"フォーラムの巡回を中止しました。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回(会議室)", $errMsg );
return( #FALSE );
}
}
//--- 会議室の構成が変更されていないかチェックしつつ ---//
//--- チェックデータの作成及び未読数の取得 ---//
$i = 1;
$enum = 1;
foreach( $a, $mdsList ) {
$no = data.toNumber( $a );
$num = data.toNumber( str.mid( $a, 12, 4 ));
$str = list.getNth( $titleList, $enum );
$chkNum = str.addCode( $str );
loop {
if( $i == $no ) {
exit;
}
list.putLast( $chkList, -1 );
list.putLast( $numList, 0 );
list.putLast( $strList, "" );
if( $maxNo < $i ) {
$updateFlg = 1;
$maxNo = $i;
} elif( list.getNth( $dbChkList, $i ) != -1 ) {
$updateFlg = 1;
}
$i = $i + 1;
}
list.putLast( $chkList, $chkNum );
list.putLast( $numList, $num );
list.putLast( $strList, str.join( [$a, $str], "" ));
//--- 構成変更のチェック ---//
if( $maxNo < $no ) {
$updateFlg = 1;
$maxNo = $no;
} elif( list.getNth( $dbChkList, $no ) != $chkNum ) {
$updateFlg = 1;
}
$i = $i + 1;
$enum = $enum + 1;
}
if( $maxNo != $no ) {
$updateFlg = 1;
$maxNo = $no;
}
//--- 巡回指定されている会議室に入る ---//
if( list.get1st( list.get1st( $list )) == #TRUE ) {
$maxNum = list.getNth( list.get1st( $list ), 2 );
} else {
$maxNum = 99999;
}
$noList = list.getNth( $list, 2 );
$chkList2 = list.getNth( $list, 3 );
$logId = AUTO.getLogFileId();
$i = 1;
$warning = 0;
foreach( $mesNo, $noList ) {
//--- 会議室の構成のチェック ---//
if( $mesNo > $maxNo ) {
//--- 会議室が存在しない ---//
if(( $updateFlg == 0 )&&( $warning == 0 )) {
$errMsg = ["会議室の構成が変更されています。",
"設定を再度行って下さい。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回(会議室)", $errMsg );
$warning = 1;
}
$i = $i + 1;
continue;
}
if( list.getNth( $chkList, $mesNo ) != list.getNth( $chkList2, $i )) {
//--- 会議室の構成が変わっている? ---//
if(( $updateFlg == 0 )&&( $warning == 0 )) {
$errMsg = ["会議室の構成が変更されています。",
"設定を再度行って下さい。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回(会議室)", $errMsg );
$warning = 1;
}
$i = $i + 1;
continue;
}
//--- 会議室に入る必要があるかどうか調べる ---//
$downList2 = AUTO.selectList( $downList, 8, $mesNo );
$st = $status;
if( list.getNth( $numList, $mesNo ) == 0 ) {
$st = $st & 0xFB; // 未読無し
}
if( $st & 0x02 ) {
$upList2 = AUTO.selectUpList( $upList, 5, $mesNo );
if( list.size( $upList2 ) == 0 ) {
$st = $st & 0xFD; // アップロード文書無し
} else {
//--- 送信文書がある場合は強制的に ---//
//--- 未読ダウンロードをONにする ---//
$num = list.getNth( $numList, $mesNo );
$num = $num + list.size( $upList2 );
list.delNth( $numList, $mesNo );
list.putNth( $numList, $mesNo - 1, $num );
$st = $st | 0x04;
}
}
if( $st & 0x08 ) {
if( list.size( $downList2 ) == 0 ) {
$st = $st & 0xF7; // 指定ダウンロード無し
}
}
//--- 会議室に入る必要無し ---//
if(( $st & 0x0E ) == 0 ) {
$i = $i + 1;
continue;
}
$mesName = list.getNth( $strList, $mesNo );
//--- 会議室に入る ---//
$cmd = str.join(["MES ", data.toString( $mesNo )], "" );
loop {
AUTO.putStr( str.join([$cmd, "\r"], "" ));
$cmd = str.join([$cmd, "\n"], "" );
$errFlg = 1;
comtable( $a, 300 ) {
$cmd { $errFlg = 0; exit; }
interval{ AUTO.haltCheck(); }
}
if( $errFlg == 0 ) {
exit;
}
AUTO.putStr("\r");
AUTO.waitPrompt( #TRUE );
continue;
}
$moreFlg = 0;
$inFlg = 0;
comtable( $a, 1200 ) {
"CCS(%a)>\w\w" { $inFlg = 1; exit; }
">\w\w" { exit; }
">\w\w" { exit; }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
interval { AUTO.haltCheck(); }
timeout { exit; }
}
if( $inFlg == 0 ) {
$errMsg =["会議室に入る事が出来ませんでした。",
str.join(["フォーラム名:", $ForumName], "" ),
str.join(["会議室名 :", $mesName], "" )];
AUTO.error("フォーラム巡回(会議室)",$errMsg);
$i = $i + 1;
continue;
}
//--- 文書のアップロード ---//
if( $st & 0x02 ) {
xfer.pauseText( $logId );
foreach( $a, $upList2 ) {
$$USER.DEFINED.9 = [$a, 3];
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\SENDFILE.MX"], "" );
script.openExtern( $path, #FALSE, [] );
if( AUTO.getHaltFlg() != 0 ) {
return( #FALSE );
}
if( $$USER.DEFINED.9 == #TRUE ) {
AUTO.setSendFlg( $a );
}
xfer.resumeText( $logId );
}
}
//--- 指定ダウンロード ---//
if( $st & 0x08 ) {
foreach( $a, $downList2 ) {
if( list.getNth( $chkList, $mesNo ) != list.getNth( $a, 12 )) {
//--- 会議室の構成が変わった? ---//
continue;
}
//--- メッセージを読む ---//
$no = list.getNth( $a, 9 );
$cmd = str.join(["#", data.toString( $no ),"\r"], "" );
AUTO.putStr2( $cmd );
$flg = 0;
$reNo = -1;
$ptr1 = file.tell( $logId );
comtable( $b, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
">\w\w" { exit; }
">\w\w" { exit; }
"%5d/%5d %8b " {
if( $flg == 0 ) {
$flg = 1;
$ptr = $ptr1;
$title = str.replaceAll(
com.getString( 0, #TRUE, #TRUE ),
"\n", "" );
}
}
"%3d/%3d %8b " {
if( $flg == 0 ) {
$flg = 1;
$ptr = $ptr1;
$title = str.replaceAll(
com.getString( 0, #TRUE, #TRUE ),
"\n", "" );
}
}
"(%b%d) %2d/%2d/%2d %2d:%2d %3dへのコメント" {
if( $reNo == -1 ) {
$reNo = data.toNumber( str.mid( $b, 23, 3 ));
}
}
"(%b%d) %2d/%2d/%2d %2d:%2d %5dへのコメント" {
if( $reNo == -1 ) {
$reNo = data.toNumber( str.mid( $b, 23, 5 ));
}
}
"\n" {
$ptr2 = $ptr1;
$ptr1 = file.tell( $logId );
}
}
if( $flg == 0 ) {
$errMsg = ["文書が存在しません。",
"文書のダウンロードを中止しました。",
str.join(["フォーラム名:", $ForumName], "" ),
str.join(["会議室名 :", $mesName ], "" ),
str.join(["文書番号 :",
data.toString($no)], "" )];
AUTO.error("フォーラム巡回(会議室)", $errMsg );
continue;
}
AUTO.writeIdx([
[0x501,[7,[1,2,$formNo,3,$mesNo,$no,-1,-1,-1,-1]]],
[0x104,[$title]],
[0x401,[1,[$reNo,0,0,0,0]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
list.del1st( $a );
list.put1st( $a, 1 );
AUTO.updateDownData( [$a] );
}
}
//--- 未読ダウンロード ---//
if( $st & 0x04 ) {
if( list.getNth( $numList, $mesNo ) > $maxNum ) {
//--- 未読が指定上限数より多い場合、 ---//
//--- タイトル一覧を表示 ---//
$errFlg = 0;
$ptr = #FALSE;
AUTO.putStr2("RTN\r");
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
">\w\w" {
AUTO.sendCommand("RC MAX");
exit;
}
">\w\w" {
AUTO.sendCommand("RC MAX");
exit;
}
"題名\n" {
if( $ptr == #FALSE ) {
$ptr = file.tell( $logId );
}
}
"\n" {
if( $ptr != #FALSE ) {
$ptr2 = file.tell( $logId );
}
}
$AUTO.WAIT60 {
$errFlg = 1;
AUTO.putStr("\r");
}
}
if(( $errFlg == 0 )&&( $ptr != #FALSE )) {
AUTO.writeIdx([
[0x501,[8,[1,2,$formNo,3,$mesNo,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
} else {
$errMsg =["会議室の未読タイトル一覧の取得に失敗しました。",
str.join(["フォーラム名:", $ForumName], "" ),
str.join(["会議室名 :", $mesName], "" )];
AUTO.error("フォーラム巡回(会議室)",$errMsg);
}
} else {
//--- 未読を全て表示 ---//
$mode = 0;
$reNo = -1;
$ptr1 = file.tell( $logId );
$mesDataList = [];
AUTO.putStr2("MREAD\r");
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
"\n" {
$ptr2 = $ptr1;
$ptr1 = file.tell( $logId );
}
"(%b%d) %2d/%2d/%2d %2d:%2d %3dへのコメント" {
if( $reNo == -1 ) {
$reNo = data.toNumber( str.mid( $a, 23, 3 ));
}
}
"(%b%d) %2d/%2d/%2d %2d:%2d %5dへのコメント" {
if( $reNo == -1 ) {
$reNo = data.toNumber( str.mid( $a, 23, 5 ));
}
}
"%3d/%3d %8b " {
if( file.tell( $logId ) == $ptr1 + 20 ) {
if( $mode == 1 ) {
$tagList = [
[0x501,[7,[1,2,$formNo,3,$mesNo,$no,
-1,-1,-1,-1]]],
[0x104,[$title]],
[0x401,[1,[$reNo,0,0,0,0]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]];
if( $reNo == -1 ) {
list.delNth( $tagList, 3 );
}
AUTO.writeIdx( $tagList );
}
$ptr = $ptr1;
$title = str.replaceAll(
com.getString( 0, #TRUE, #TRUE ),
"\n", "" );
$no = data.toNumber( str.left( $a, 3 ));
$mode = 1;
$reNo = -1;
}
}
"%5d/%5d %8b " {
if( file.tell( $logId ) == $ptr1 + 22 ) {
if( $mode == 1 ) {
$tagList = [
[0x501,[7,[1,2,$formNo,3,$mesNo,$no,
-1,-1,-1,-1]]],
[0x104,[$title]],
[0x401,[1,[$reNo,0,0,0,0]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]];
if( $reNo == -1 ) {
list.delNth( $tagList, 3 );
}
AUTO.writeIdx( $tagList );
}
$ptr = $ptr1;
$title = str.replaceAll(
com.getString( 0, #TRUE, #TRUE ),
"\n", "" );
$no = data.toNumber( str.left( $a, 5 ));
$mode = 1;
$reNo = -1;
}
}
">\w\w" {
if( $mode == 1 ) {
$tagList = [
[0x501,[7,[1,2,$formNo,3,$mesNo,$no,-1,-1,-1,-1]]],
[0x104,[$title]],
[0x401,[1,[$reNo,0,0,0,0]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]];
if( $reNo == -1 ) {
list.delNth( $tagList, 3 );
}
AUTO.writeIdx( $tagList );
}
exit;
}
}
}
}
$i = $i + 1;
}
//--- データベースの更新を行う ---//
if( $updateFlg == 1 ) {
Auto.updateDBfile( list.putLast( $tag, 3 ), $strList );
AUTO.setTrdUpdateFlg();
if( list.size( $dbChkList ) != 0 ) {
$errMsg = ["会議室の構成に変更がありました。",
"データベースファイルを更新しました。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回(会議室)", $errMsg );
}
}
return( #TRUE );
}
//----------------------------------//
//--- データライブラリの巡回 ---//
//----------------------------------//
function Auto.lib(
$ForumName, // フォーラム名
$status, // 動作ステータス
$tag, // フォーラムのTRDのID
$list, // データライブラリ情報リスト
$downList ) // ダウンロード情報リスト
{
$dbChkList = [];
$chkList = [];
$strList = [];
$maxNo = 0;
$formNo = list.getNth( $tag, 3 );
sys.stopIntRec();
//--- データベースファイルのデータを取り出す ---//
$i = 1;
$trdId = AUTO.getTrdId();
$tagSub = data.copy( $tag );
list.putLast( $tagSub, 4 );
list.putLast( $tagSub, -6 );
loop {
$ret = trd.getData( $trdId, $tagSub );
if( list.get1st( $ret ) == 0 ) {
exit;
}
$wkList = str.split( list.getNth( $ret, 2 ), "\t" );
$no = data.toNumber( list.get1st( $wkList ));
$str = list.getNth( $wkList, 2 );
$str = str.mid( $str, 28, str.length( $str ) - 28 );
$chkNum = str.addCode( $str );
loop {
if( $i == $no ) {
exit;
}
list.putLast( $dbChkList, -1 );
$i = $i + 1;
}
list.putLast( $dbChkList, $chkNum );
$i = $i + 1;
$maxNo = $no;
$tagSub = [];
}
//--- データライブラリの一覧を表示 ---//
$updateFlg = 0;
$mdsList = [];
$titleList = [];
AUTO.putStr2("LIB\r");
comtable( $a, 1200 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
">\w\w" { exit; } // プロンプト
">\w\w" { exit; } // プロンプト
timeout { // 何か変・・・
$errMsg = ["通信異常(タイムアウト)",
"フォーラムの巡回を中止しました。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回", $errMsg );
return( #FALSE );
}
"%3b%d %5b (%4b) %2d/%2d " { // 一覧の見出し
//--- 見出し文字列とデータライブラリ名の記録 ---//
list.putLast( $mdsList, $a );
list.putLast( $titleList,
str.replaceAll( com.getString(0, #TRUE, #TRUE), "\n", ""));
}
}
//--- データライブラリの構成に変更があったかどうかのチェック ---//
$i = 1;
$enum = 1;
foreach( $a, $mdsList ) {
//--- チェックデータの作成 ---//
$no = data.toNumber( $a );
$str = list.getNth( $titleList, $enum );
$chkNum = str.addCode( $str );
loop {
if( $i == $no ) {
exit;
}
list.putLast( $chkList, -1 );
list.putLast( $strList, "" );
if( $maxNo < $i ) {
$updateFlg = 1;
$maxNo = $i;
} elif( list.getNth( $dbChkList, $i ) != -1 ) {
$updateFlg = 1;
}
$i = $i + 1;
}
list.putLast( $chkList, $chkNum );
list.putLast( $strList, str.join( [$a, $str], "" ));
//--- 構成変更のチェック ---//
if( $maxNo < $no ) {
$updateFlg = 1;
$maxNo = $no;
} elif( list.getNth( $dbChkList, $no ) != $chkNum ) {
$updateFlg = 1;
}
$i = $i + 1;
$enum = $enum + 1;
}
if( $maxNo != $no ) {
$updateFlg = 1;
$maxNo = $no;
}
//--- 巡回指定されているデータライブラリに入る ---//
$dirList = list.getNth( $list, 1 );
$noList = list.getNth( $list, 2 );
$chkList2 = list.getNth( $list, 3 );
$logId = AUTO.getLogFileId();
$i = 1;
$warning = 0;
foreach( $libNo, $noList ) {
//--- データライブラリの構成のチェック ---//
if( $libNo > $maxNo ) {
//--- データライブラリが存在しない ---//
if(( $updateFlg == 0 )&&( $warning == 0 )) {
$errMsg = ["デ-タライブラリの構成が変更されています。",
"設定を再度行って下さい。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回(データライブラリ)", $errMsg );
$warning = 1;
}
$i = $i + 1;
continue;
}
if( list.getNth( $chkList, $libNo ) != list.getNth( $chkList2, $i )) {
//--- データライブラリの構成が変わっている? ---//
if(( $updateFlg == 0 )&&( $warning == 0 )) {
$errMsg = ["デ-タライブラリの構成が変更されています。",
"設定を再度行って下さい。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回(データライブラリ)", $errMsg );
$warning = 1;
}
$i = $i + 1;
continue;
}
//--- データライブラリに入る必要があるかどうか調べる ---//
$st = $status;
if( $st & 0x20 ) {
$downList2 = AUTO.selectList( $downList, 8, $libNo );
if( list.size( $downList2 ) == 0 ) {
$st = $st & 0xDF; // 指定ダウンロード無し
}
}
//--- データライブラリに入る必要無し ---//
if(( $st & 0x30 ) == 0 ) {
$i = $i + 1;
continue;
}
$libName = list.getNth( $strList, $libNo );
//--- データライブラリに入る ---//
$cmd = str.join(["LIB ", data.toString( $libNo )], "" );
loop {
AUTO.putStr( str.join([$cmd, "\r"], "" ));
$cmd = str.join([$cmd, "\n"], "" );
$errFlg = 1;
comtable( $a, 300 ) {
interval{ AUTO.haltCheck(); }
$cmd { $errFlg = 0; exit; }
}
if( $errFlg == 0 ) {
exit;
}
AUTO.putStr("\r");
AUTO.waitPrompt( #TRUE );
continue;
}
$moreFlg = 0;
$inFlg = 0;
comtable( $a, 1200 ) {
"LIB>\w\w" { $inFlg = 1; exit; }
">\w\w" { exit; }
">\w\w" { exit; }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
interval { AUTO.haltCheck(); }
timeout { exit; }
}
if( $inFlg == 0 ) {
$errMsg =["データライブラリに入る事が出来ませんでした。",
str.join(["フォーラム名 :", $ForumName ],"" ),
str.join(["データライブラリ名:", $libName ],"" )];
AUTO.error("フォーラム巡回(データライブラリ)",$errMsg);
$i = $i + 1;
continue;
}
//--- 指定ダウンロード ---//
if( $st & 0x20 ) {
$prot = "BPL";
foreach( $a, $downList2 ) {
if( list.getNth( $chkList, $libNo ) != list.getNth( $a, 12 )) {
//--- データライブラリの構成が変わった? ---//
continue;
}
//--- 説明文の読み込み ---//
$no = list.getNth( $a, 9 );
$cmd = str.join(["DOWN ",data.toString($no)," PROT:",
$prot, "\r"], "" );
AUTO.putStr( $cmd );
$flg = 0;
$mode = 0;
$bin = 0;
comtable( $b, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
">\w\w" { exit; }
">\w\w" { exit; }
"属性:バイナリ"{ $bin = 1; }
"データ名:" {
$title = str.replaceAll( com.getString(0,#TRUE,#TRUE),
"\n", "" );
}
"\n" {
if( $mode == 2 ) {
$ptr3 = $ptr2;
$ptr2 = file.tell( $logId );
} elif( $mode == 1 ) {
$ptr2 = file.tell( $logId );
$mode = 2;
} else {
$ptr = file.tell( $logId );
$mode = 1;
}
}
":\w\w" {
$mesPtr = $ptr;
$mesByte = $ptr3 - $ptr;
$flg = 1;
exit;
}
timeout {
$errMsg = ["通信異常(タイムアウト)",
"フォーラムの巡回を中止しました。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回", $errMsg );
return( #FALSE );
}
}
if( $flg == 0 ) {
$errMsg = ["データが存在しません。",
"ダウンロードを中止しました。",
str.join(["フォーラム名 :",
$ForumName ],"" ),
str.join(["データライブラリ名:",
$libName ],"" ),
str.join(["データ番号 :",
data.toString($no)],"" )];
AUTO.error("フォーラム巡回(データライブラリ)",$errMsg);
continue;
}
$fName = list.getNth( $a, 13 );
if( $fName == "" ) { // ログに保存
$downMode = 0;
$fName = AUTO.getLogFileName();
} else { // 指定ファイルに保存
$downMode = 1;
//--- ファイルのフルパスを生成する ---//
if( $bin == 0 ) {
$dir = $$DIR.TXT.DOWN;
} else {
$dir = $$DIR.BIN.DOWN;
}
$fName = file.toFullpath( $fName, $dir );
if( file.exist( $fName ) == #TRUE ) {
//--- 既にファイルが存在する場合 ---//
//--- 適当な名前に変更する ---//
$tmp = $fName;
$fName = file.autoName( $dir, $bin );
$errMsg = ["同一のファイルが、既に存在します。",
"ファイル名の変更を行いました。",
str.join([$tmp, " → ", $fName], "" ),
str.join(["フォーラム名 :",
$ForumName ],"" ),
str.join(["データライブラリ名:",
$libName ],"" ),
str.join(["データ番号 :",
data.toString($no)],"" )];
AUTO.error("フォーラム巡回(データライブラリ)",
$errMsg );
}
}
AUTO.sendCommand("1");
$fNamePtr = file.tell( $logId );
$fNameByte = str.length( $fName );
AUTO.putStr2( str.join([$fName, "\r"], "" ));
comtable( $b, 600 ) {
interval { AUTO.haltCheck(); }
"開始-\n" {
if( $downMode == 0 ) { // ログに保存の場合
xfer.endText( $logId );
$dataPtr = file.tell( $logId );
file.close( $logId );
}
exit;
}
timeout {
$errMsg = ["通信異常(タイムアウト)",
"フォーラムの巡回を中止しました。",
str.join(["フォーラム名:", $ForumName], "" )];
AUTO.error("フォーラム巡回", $errMsg );
return( #FALSE );
}
}
event.mask( @ERROR );
$IdxId = AUTO.getIdxFileId();
$idxHeader = lsi.getInfo( $IdxId );
list.del1st( $idxHeader );
list.put1st( $idxHeader, AUTO.getIdxNum());
lsi.setInfo( $IdxId, $idxHeader );
if( $downMode == 0 ) { // ログに保存の場合
$ret = xfer.recBinary( $fName, "", #TRUE, [] );
} else { // ファイルに保存の場合
$ret = xfer.recBinary( $fName, "", #FALSE, [] );
}
event.unmask( @ERROR );
if( $downMode == 0 ) {
$logId = file.open( $fName, "", 1 );
file.seek( $logId, 0, 2 );
$dataByte = $ret;
xfer.recText( $logId, [] );
AUTO.setLogFileId( $logId );
}
if( data.getType( $ret ) != #NUMBER ) {
$errMsg =["ライブラリデータのダウンロードに失敗しました。",
str.join(["フォーラム名 :",
$ForumName ],"" ),
str.join(["データライブラリ名:",
$libName ],"" ),
str.join(["データ番号 :",
data.toString($no)],"" )];
AUTO.error("フォーラム巡回(データライブラリ)", $errMsg );
} else {
if( $downMode == 0 ) { // ログに保存した場合
AUTO.writeIdx([
[0x501,[10,[1,2,$formNo,4,$libNo,$no,-1,-1,-1,-1]]],
[0x104,[$title]],
[0x302,[0x01,0x00,$mesPtr,$mesByte,0,0,0]],
[0x303,[0x01,0x8000,$dataPtr,$dataByte,0,0,0]]]);
} else { // 指定ファイルに保存した場合
if( $bin == 1 ) {
$type = 0x8000;
} else {
$type = 0x0000;
}
AUTO.writeIdx([
[0x501,[10,[1,2,$formNo,4,$libNo,$no,-1,-1,-1,-1]]],
[0x104,[$title]],
[0x302,[0x01,0x00,$mesPtr,$mesByte,0,0,0]],
[0x204,[$type,0x01,$fName]]] );
}
list.del1st( $a );
list.put1st( $a, 1 );
AUTO.updateDownData( [$a] );
}
AUTO.waitPrompt( #TRUE );
}
}
//--- データ名一覧を表示 ---//
if( $st & 0x10 ) {
$mode = 0;
$errFlg = 0;
if( list.get1st( $dirList ) == 2 ) {
//--- 最新から指定数表示 ---//
$cmd = str.join(["SET LINE ",
data.toString( list.getNth( $dirList,2)+2)], "" );
AUTO.sendCommand( $cmd );
AUTO.sendCommand("SET PAGE ON");
}
AUTO.putStr2("DIR\r");
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
"more>\w\w" { exit; }
">\w\w" { exit; }
">\w\w" { exit; }
"参照 データ名\n" {
$ptr = file.tell( $logId );
$mode = 1;
}
"\n" {
$ptr2 = file.tell( $logId );
}
$AUTO.WAIT60 {
$errFlg = 1;
AUTO.putStr("\r");
}
}
if( $errFlg == 1 ) {
$errMsg =["データライブラリのデータ一覧の取得に失敗しました。",
str.join(["フォーラム名 :", $ForumName],""),
str.join(["データライブラリ名:", $libName], "")];
AUTO.error("フォーラム巡回(データライブラリ)", $errMsg );
} else {
if( $mode == 1 ) {
AUTO.writeIdx([
[0x501,[11,[1,2,$formNo,4,$libNo,-1,-1,-1,-1,-1]]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
}
}
if( list.get1st( $dirList ) == 2 ) {
AUTO.sendCommand("E");
AUTO.sendCommand("SET PAGE OFF");
}
}
$i = $i + 1;
}
//--- データベースの更新を行う ---//
if( $updateFlg == 1 ) {
Auto.updateDBfile( list.putLast( $tag, 4 ), $strList );
AUTO.setTrdUpdateFlg();
if( list.size( $dbChkList ) != 0 ) {
$errMsg = ["データライブラリの構成に変更がありました。",
"データベースファイルを更新しました。",
str.join(["フォーラム名 :", $ForumName],"" )];
AUTO.error("フォーラム巡回(データライブラリ)", $errMsg );
}
}
return( #TRUE );
}
//------------------------------------------------//
//--- データベースファイルの内容を更新する ---//
//--- (会議室/データライブラリ一覧) ---//
//------------------------------------------------//
function Auto.updateDBfile( $tag, $strList ) {
$trdId = AUTO.getTrdId();
//--- まずは現在のデータを全て削除する ---//
list.putLast( $tag, -6 );
if( trd.count( $trdId, $tag ) != 0 ) {
trd.delData( $trdId, $tag );
}
//--- データを書き込む ---//
foreach( $a, $strList ) {
if( $a == "" ) {
continue;
}
$no = data.toNumber( str.left( $a, 4 ));
list.delLast( $tag );
list.putLast( $tag, $no );
trd.setData( $trdId, $tag, str.join([data.toString($no),$a], "\t" ));
}
AUTO.setTrdUpdateFlg();
return;
}